package main

import "fmt"

func main() {

	a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	b1 := a[:5]
	b2 := a[3:9]
	b3 := a[:]

	fmt.Println(b1, b2, b3)

	const ( //练习回忆了一下常量
		A3 = 1
		B3 = 2
	)

	//数组
	var arr = [...]int{1, 2, 3, 4, 5}
	fmt.Println(arr)

	//切片
	s1 := []int{123456, 1, 2, 3}
	fmt.Println(s1)

	/*
		make(类型，长度，容量)   创建切片
		append(切片变量，内容1，内容2，内容3)   尾部追加元素（即使超过容量也没有关系，会自动扩容，这就要求我们要添加元素后再传给定义的切片变量，因为如果扩容后地址就会发生改变）
		append(被加入元素的切片变量,切片变量...)
	*/

	s3 := make([]int, 3, 8) //容量是8，但是只有3个元素
	s4 := make([]int, 0, 1)
	fmt.Println(s3, cap(s3), len(s3))

	s3 = append(s3, 1, 2, 3, 4, 5, 6)
	fmt.Println(s3, cap(s3), len(s3))

	s4 = append(s4, s3...) //将s3的元素追加到s4尾部
	fmt.Println(s4, cap(s4), len(s4))

	s5 := make([]int, 5, 50)
	fmt.Println("深拷贝", s5, len(s5), cap(s5), s4)
	copy(s5, s4)
	fmt.Println("深拷贝", s5, len(s5), cap(s5), s4)

	//append(s5,1,2,3,4,5,9999)

	fmt.Println(s5)
}
